fix: decoding of binary data with null bytes - #108
Open
kateweaver wants to merge 1 commit into
Open
Conversation
- fixes and issue where pylibdmtx.decode() trucates data at first null
byte causing binary payloads (base256 encoded) to decode incorrectly
- The underlying C library (libdmtx) supports null bytes correclty.
- The Python wrapper used C strings as-si, which results in
null-termination.
- Replaces string_at(msg.contents.output)
- Now uses string_at(msg.contents.output, msg.contents.outputIdx)
- Tests added to verify null handling in both binary and ascii data.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Decoding binary data (e.g. Data Matrix codes encoded with Base256 that include null bytes) fails in
pylibdmtxbecause the decode wrapper treats it as string-like and truncates the output at the first\x00. This prevents accurate round-tripping of binary payloads.This behavior is not present in the underlying
libdmtxC library, which handles null bytes correctly.Evidence
Fix
Tests
Additional Notes